iT邦幫忙

2025 iThome 鐵人賽

DAY 23
0
自我挑戰組

leetcode系列 第 23

leetcode 23. Merge k Sorted Lists

  • 分享至 

  • xImage
  •  

題目:
You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.

Merge all the linked-lists into one sorted linked-list and return it.
給定一個k鍊錶數組lists,每個鍊錶按升序排列。

將所有連結列表合併為一個已排序的連結列表並返回。

題目說明

給定一個陣列,裡面有 k 條已排序的單向鏈表,要求將它們合併成一條 排序好的鏈表,並回傳頭節點。

https://ithelp.ithome.com.tw/upload/images/20251007/20169340vRCEKvHPlp.png

解題思路

這題有幾種解法:

方法一:逐一合併 (Brute Force)

依次把每條鏈表合併到結果鏈表裡。

時間複雜度 O(k·n),效率偏低。

方法二:分治法 (Divide & Conquer)

將 k 條鏈表兩兩合併,類似「歸併排序」的過程。

每次合併兩條鏈表的時間 O(n),總複雜度 O(n log k)。

方法三:最小堆 / 優先佇列 (PriorityQueue)

把每條鏈表的頭節點放入最小堆(依節點值排序)。

每次取出堆頂(最小值),並把該節點的下一個節點放回堆。

不斷取出直到堆空。

複雜度 O(n log k),其中 n 是所有節點數。


上一篇
leetcode 22. Generate Parentheses
下一篇
leetcode 24. Swap Nodes in Pairs
系列文
leetcode24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言